/**
 * 
 */
package ar.utn.frgp.banco.entity.enums;

/**
 * @author gvolpe
 * @since 18/04/2012 15:20:51
 */
public enum TipoCuenta {

	CAJA_AHORROS(1,1,0d,"cuentas.tipo.ca"),
	CUENTA_CORRIENTE(2,5,0.1,"cuentas.tipo.cc");
	
	private Integer codigo;
	private Integer maximo;
	private Double intereses;
	private String i18nKeyName;
	
	/**
	 * @return the maximo
	 */
	public Integer getMaximo() {
		return maximo;
	}

	
	
	/**
	 * Constructor privado
	 * @param cod el codigo del enum
	 */
	private TipoCuenta(Integer cod,Integer maxima,Double intereses,String i18nKeyName) {
		this.i18nKeyName = i18nKeyName;
		maximo = maxima;
		setCodigo(cod);
		setIntereses(intereses);
	}

	/**
	 * @return the intereses
	 */
	public Double getIntereses() {
		return intereses;
	}

	/**
	 * @param intereses the intereses to set
	 */
	private void setIntereses(Double intereses) {
		this.intereses = intereses;
	}

	/**
	 * setter para el codigo del enum.
	 * Este setter debe ser privado dado  que no se debe modificar por ning�n otro objeto.
	 * @param codigo el codigo a setear
	 */
	private void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	/**
	 * getter del codigo
	 * @return el codigo del enum.
	 */
	public Integer getCodigo() {
		return codigo;
	}
	
	/**
	 * 
	 * @param o un Object que contiene el codigo del TipoCuenta
	 * @return el TipoCuenta correspondiente.
	 */
	public static TipoCuenta getTipoCuenta(Object o){
		
		if (o == null) return null;
		if (o instanceof TipoCuenta) return (TipoCuenta) o;
		
		
		for (TipoCuenta a : TipoCuenta.values()){
			if (a.getCodigo().toString().equals(o)) return a;
		}
		
		
		return null;
	}



	/**
	 * @return the i18nKeyName
	 */
	public String getI18nKeyName() {
		return i18nKeyName;
	}
}
